package com.bdqn.gulimall.seckill.scheduled;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * HelloSchedule
 * 自动配置类 TaskExecutionAutoConfiguration
 * @author f
 * @since 2022/3/11
 */
// @EnableAsync//开启异步任务
@Slf4j
@Component //容器
// @EnableScheduling // 开启定时任务
public class HelloSchedule {

    /**
     * Spring中只允许6位，不允许加年份(第7位）
     * 1-7是周一到周日，闲得蛋疼也可以写英文 MON-SUN
     * 定时任务不应阻塞，默认是阻塞的
     *  1.让业务以异步的方式运行，自己提交到线程池
     *  2.定时任务线程池，设置 TaskSchedulingProperties
     *  3.让定时任务异步执行
     *
     *  使用异步让定时任务不阻塞
     *
     */
    @Async //写在要异步执行的方法上
    @Scheduled(cron = "* * * ? * 5")
    public void hello() throws InterruptedException {
        log.info("你好……");
        Thread.sleep(3000);
    }
}
